void solve()
{
	int n, X;
	cin >> n >> X;

	vector<int> a(n), c(X + 1);
	vector<ll> A(X + 1), B(X + 1);
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		c[a[i]]++;
		A[a[i]]++, B[a[i]]++;
	}
	auto f = A * B;

	for (int i = 0; i < n; i++) {
		f[a[i] + a[i]]--;	
	}

	int aa = -1;
	for (int i = 0; i < n; i++) {
		ll x = f[X - a[i]];
		if (a[i] + a[i] <= X) {
			x -= c[X - a[i] - a[i]] * 2;
		}
		if (3 * a[i] == X) {
			x += 2;
		}
		if (x) {
			aa = i;
			break;
		}
	}
	if (aa == -1) {
		cout << -1;
		return;
	}

  int bb = -1;
  for (int i = 0; i < n; i++) {
    if (i != aa && X >= a[i] + a[aa]) {
      int v = X - a[i] - a[aa];
      int x = c[v];
      if (v == a[i]) {
        x--;
      }
      if (v == a[aa]) {
        x--;
      }
      if (x) {
        bb = i;
        break;
      }
    }
  }

  assert(bb != -1);
  vector<int> ans;
  for (int i = 0; i < n; i++) {
    if (i != aa && i != bb) {
      if (a[aa] + a[bb] + a[i] == X) {
        ans.push_back(aa + 1);
        ans.push_back(bb + 1);
        ans.push_back(i + 1);
        break;
      }
    }
  }
  sort(ans.begin(), ans.end());
  for (auto &x : ans) {
    cout << x << ' ';
  }
}